Attribute Module_Name = "deepseek"
// 功能：WPS宏调用DeepSeek API（保留选中文本版本）
function callDeepSeekAPI() {
    // 1. API配置
    const apiUrl = "https://api.deepseek.com/chat/completions";
    const apiKey = "sk-xxxxxxxxxxxx"; // 请替换为您的真实API密钥

    // 2. 校验API密钥
    if(apiKey == "sk-XX"){
        alert("请先配置您自己的DeepSeek API密钥后再使用。");
        return;
    }

    // 3. 获取用户选中的文本
    var selection1 = Application.Selection;
    selectedText = selection1.Text;
    if (selection1.Type === 1 ) {
        alert("请先选择一段文本。");
        return;
    }


    // 4. 显示处理中状态提示
    let statusBar = Application.CommandBars("Status Bar");
    let originalStatus = statusBar.Text;
    statusBar.Text = "🤖 DeepSeek AI正在思考中，请稍候...";
    
    // 5. 在文档中插入等待标记（在选中内容后插入）
    let selection = Application.Selection;
    let originalRange = selection.Range; // 保存原始选中范围
    let waitText = "\n\n[AI正在思考中...]\n";
    
    // 在选中文本后插入等待标记，不删除任何原有内容
    selection.Collapse(1); // 1 = wdCollapseEnd，将选择范围折叠到末尾
    selection.InsertAfter(waitText);
    let waitRange = selection.Range; // 记录等待文本的位置
    
    // 6. 构建请求数据
    const requestBody = JSON.stringify({
        "model": "deepseek-chat",
        "messages": [
            {"role": "system", "content": "你是一个有用的助手，专注于处理办公文档内容。要输出word能识别的格式，不要输出markdown格式，不要输出html标签"},
            {"role": "user", "content": selectedText}
        ],
        "stream": false
    });

    // 7. 创建并发送HTTP请求
    const xhr = new XMLHttpRequest();
    xhr.open("POST", apiUrl, false);

    try {
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader("Authorization", "Bearer " + apiKey);
        xhr.send(requestBody);

        // 8. 处理响应
        if (xhr.status === 200) {
            const response = JSON.parse(xhr.responseText);
            const aiResponse = response.choices[0].message.content;
            
            // 将等待文本替换为AI回复，保留所有原始内容
            waitRange.Text = "\n" + aiResponse + "\n";
            
            // 恢复状态栏
            statusBar.Text = "✅ AI回复已完成！";
            
        } else {
            // 请求失败时也删除等待文本，保留原始内容
            waitRange.Text = "\n[AI请求失败，请重试]\n";
            statusBar.Text = "❌ AI请求失败";
            alert("API调用失败！状态码：" + xhr.status);
        }
        
    } catch (error) {
        // 出错时清理等待文本，保留原始内容
        waitRange.Text = "\n[请求出错：" + error.message + "]\n";
        statusBar.Text = "❌ 请求出错";
    }
}

